package com.shengzai.mapreduce.text2;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.mapreduce.RecordWriter;
import org.apache.hadoop.mapreduce.TaskAttemptContext;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import java.io.IOException;

/**
 *  由于自定义输出类，需要继承OutputFormat类，而该类是一个顶级的抽象父类，需要实现三个抽象函数
 *      并且由于在之前的学习中，发现Driver中对于文本信息的读取和写出都是有TextInputFormat和 TextOutputFormat实现
 *          所以自定义的输出类，可以尝试使用TextOutputFormat,而TextOutputFormat中对应的函数都已实现
 *          ，那么可以继承FileOutputFormat 在RecordWriter中实现其具体的业务逻辑
 */
public class MyOutputFormat extends FileOutputFormat {

    /**
     * 由于getRecordWriter 函数中需要返回一个RecordWriter对象，
     *          并且在RecordWriter对象中可以实现其写出数据的逻辑，
     *          所以需要自定义个一个RecordWriter
     *
     * @param job the information about the current task.
     * @return
     * @throws IOException
     * @throws InterruptedException
     */
    @Override
    public RecordWriter getRecordWriter(TaskAttemptContext job) throws IOException, InterruptedException {
        Configuration configuration = job.getConfiguration();
        return new MyRecordWriter(configuration);
    }


}
